<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>面试</title>
</head>
<style>
</style>
<body>
</aside>
<script>
    //题1：
    <!-- 函数提升优先级高于变量提升  优先级高的后执行,所以先执行变量提升，在执行函数提升-->
    function a() {
    }

    var a //a如果未赋值，就会被函数提升覆盖
    console.log(typeof a)

    //题2：
    function b(){
        if (!(b in window)){
            var b=2  //等价于：var b; if (!(b in window)){ b=2}
            console.log(b)
        }
        console.log(b)
    }
        b()

    //题3：
    var c = 1

    function c(c) {
        console.log(c)
        var c = 3
    }
    //由于栈的原因 最先装window 然后var定义的变量 在定义语句之前就能访问到，然后调用函数 执行完后移除栈，执行var变量。等价于 var c; function c(c) {....};c=1;c(2);所以c被赋值为1 就不是一个函数了
    c(2)
</script>
</body>
</html>